Skip to Content

Dream-RSI: Recursive Self-Improvement through Evolving Worlds

论文链接:https://arxiv.org/pdf/2609.14858 

代码链接:https://github.com/zhengkid/Dream-RSI 

摘要

对于自主 AI 智能体而言,递归自我改进(Recursive Self-Improvement)正变得日益重要,因为其进展取决于能否在复杂领域中发现高价值的解决方案。有效的探索是推动这一过程的核心动力,然而,如何管理并优化探索策略仍是一个主要瓶颈。现有系统面临着一个根本性困境:(1)固定策略无法适应搜索空间规模的扩大,(3)而在线策略优化则需要在长程推演(long-horizo​​n rollouts)伴随高昂代价与反馈延迟的情况下,在庞大的元搜索空间中进行探索。为此,我们提出了 Dream-RSI,这是一个支持可扩展且递归自我改进的探索框架。该框架引入了一个轻量级的编排层,使得探索过程变得显式且可编程,同时无需改动底层的编码智能体。我们的核心洞察在于:累积的发现历史可以作为针对已探索搜索空间的“回放模拟器”。通过在基于历史发现树构建的回放模拟器中进行“梦境模拟”(dreaming),Dream-RSI 能够获取即时且低成本的离线策略(off-policy)反馈,从而评估并改进探索策略,无需进行重复且昂贵的在线评估。改进后的策略随后被重新部署到在线环境中以推动进一步的发现,从而在一个自我改进的循环中不断扩充模拟器资源池。在算法工程、数学优化及 GPU 内核工程等多个应用场景中,Dream-RSI 不仅实现了具有竞争力甚至更优的发现质量,还大幅降低了发现成本。

1.Introduction

递归自我改进(RSI)已成为自主 AI 系统的一个宏大目标。RSI 背后的一个常见机制是迭代式发现循环:智能体生成候选方案、评估结果、整合反馈,并据此优化后续的迭代过程。此类发现循环推动了算法设计、开放式数学优化、系统设计及智能体自我改进等科学与算法领域的显著进步,而这些发现正日益助力于开发能力更强的 AI 系统。随着智能体能力的提升和自我改进目标的日益艰巨,发现过程愈发需要针对广阔搜索空间进行长程探索,往往涉及数千次的“rollout-评估”循环。在此规模下,统筹探索过程的能力变得至关重要。若探索策略不当,可能会耗费大量算力与时间,从而严重制约 RSI 的效率与可扩展性。

现有的方法主要依赖于人工设计的探索策略,这些策略在整个发现过程中往往保持不变。固定的策略无法利用积累的发现经验进行改进,且可能反复将计算资源分配给无效的搜索方向。因此,近期的研究致力于在发现过程中在线优化探索策略,但这面临着两大根本性瓶颈。首先,元层面的反馈既滞后又代价高昂:与评估单个候选对象不同,评估一项探索策略需要观察其如何影响后续的发现过程——这涉及多个“提出-评估”循环。其次,元策略空间极其庞大:新提出的策略可能表现不佳,因此往往需要尝试多种替代方案。这些挑战使得元层面的改进成本高昂:每项策略在获得有效反馈之前,可能都需要经历漫长的在线运行过程,从而难以在探索层高效地实现自我改进闭环。

为了解决这些瓶颈,我们的核心直觉很简单:如果能拥有一个快速且低成本的“发现过程模拟器”,我们就能在进行昂贵的在线部署之前,评估多种探索策略。令人惊喜的是,已完成的发现历史本身就构成了一个这样的模拟器。以往的研究通常仅将发现历史视为静态的文本上下文或用于微调权重的训练数据,但实际上,一个完整的发现过程本身就记录了一棵结构化的树,其中包含了过去的探索决策及其对应的代码执行结果。借鉴基于模型的强化学习(model-based reinforcement learning)和世界模型(World Models,见第 2 节)的理念,一旦将这些历史数据组织成“发现树”,它就可以充当重放模拟器。如图 2 所示,另一种探索策略可以在这棵预先记录的树上进行导航,以不同的顺序、并行组合方式及停止决策,遍历记录中不同的分支子集。由于所有执行结果都已存储在树中,评估新策略时只需读取历史记录,而无需重新运行底层的发现智能体或评估器。这使得元策略的改进过程发生了转变:从原本昂贵的在线试错,变成了快速的、基于模拟的“做梦”式过程。

基于这一洞察,我们推出了 Dream-RSI,这是一个用于智能体驱动发现任务中、支持可扩展且递归自我改进的元探索(meta-exploration)框架。我们首先通过一个轻量级编排层,使探索过程变得显式且可编程;该层负责控制分支、并行探索及终止操作,同时保持底层编码智能体(coding agent)不变。Dream-RSI 并未固守既定策略,而是建立了一个涵盖三个核心阶段的闭环自我改进机制(见图 1):(1) 在线探索:利用当前策略指导现实世界的发现过程,并记录历史执行轨迹;(2) 模拟器构建:将记录的发现树转化为可复用的回放模拟器池;以及 (3) 基于“梦境”(dreaming)的策略改进:在模拟器上通过低成本的“梦境”模拟来评估候选策略。随后,更新后的策略被重新部署到在线环境中,以生成新的发现经验并扩充模拟器池,从而在元探索层面上形成递归自我改进(RSI)的闭环。

我们通过涵盖算法工程、数学优化和 GPU 核函数工程这三个不同领域的 8 项科学发现任务,对 Dream-RSI 进行了实证评估。在算法工程(Lasso 路径求解器)方面,Dream-RSI 优于 sklearn 等标准库及强基线方法,同时大幅减少了智能体调用次数——相比 SimpleTES 减少了多达 162 倍,相比固定探索基线减少了 1.7 倍。在数学优化(和差问题、自相关、圆填充)方面,它在 1000 代以内即可达到或超越强基线水平,且与 SimpleTES 相比节省了超过 50 倍的计算预算。在 GPU 核函数工程(KernelBench)方面,在相同的预算限制下,它要么以少 1.79 到 2.43 倍的迭代代数达到目标执行速度,要么将核函数性能提升高达 2.09 倍。

总之,我们的主要贡献如下:1) 将历史数据视为重放模拟器:我们将已完成的发现历史概念化为重放模拟器,从而使延迟的探索反馈可被复用,以实现高效的元探索策略评估;2) 元层递归自我改进循环 (Dream-RSI):我们提出了 Dream-RSI,建立了一个递归自我改进循环,该循环通过在线探索持续收集发现历史,利用历史构建重放模拟器并通过“梦境”机制优化元探索策略,最后将升级后的策略重新部署到在线环境中;3) 经验验证:我们开展了实验,证明 Dream-RSI 在多种场景下均能提升发现的有效性与效率。

2.Motivation: Discovery History as a Replay Simulator

试想一个在陌生环境中探索的智能体。在初次尝试时,它会四处游走、误入死胡同并折返——但在此过程中,它构建了一张地图。这张地图是可以复用的:基于它,新的策略能够进行路径规划,避开已知的死胡同,重新审视过往的选择,并在无需实际走一遍的情况下比较各种路线。这正是基于模型的强化学习(model-based reinforcement learning)的逻辑。通过构建一个描述环境如何响应动作的模型,策略可以在仿真环境中进行训练或评估,而无需依赖反复的真实交互。Dreamer 系列算法便是最典型的例子:它利用积累的经验学习一个紧凑的动力学模型,随后通过在该模型中“想象”各种轨迹来优化策略。

长周期探索过程具有相同的结构。探索策略决定了探索方向、待精化的候选方案、并行分支的选择以及终止时机。在线运行该策略会留下一份结构化的记录——包括已探索的分支、做出的决策、产生的成本以及观测到的结果。如图 2 所示,我们将这份记录视为一个经验回放模拟器,即针对已探索的发现空间部分所构建的实证模型。在该模拟器中,不同的探索策略只需在记录的“探索树”上追踪不同的路径——例如选择其他分支、改变执行顺序、调整并行度或提前终止。对该路径进行评分仅需读取沿途已存储的结果,无需重新运行编码智能体或评估器。因此,一次高成本的在线运行,便能支持对多种替代策略进行多次低成本的评估。

3.Dream-RSI: Recursive Self-Improvement through Evolving Worlds

如图 1 所示,Dream-RSI 在在线探索与离线“做梦”(用于策略评估)之间交替进行,旨在改进负责分配探索计算资源的探索策略。(1)在在线运行阶段,探索策略引导一个固定的探索智能体生成树状结构的探索轨迹;该树中的每个节点代表一次探索尝试,并由一个固定的评估器进行评分。随后,这棵探索树便构成了一个“回放世界”,使得备选策略能够基于已存储的探索结果进行重新评估。(2)在离线“做梦”阶段,一个固定的智能体会迭代修改探索策略的代码,并针对所有已存储的回放世界对每次修改进行评估;表现最佳的版本将被部署用于下一轮在线运行。此过程中仅探索策略的代码发生变化,而模型、评估器及执行接口均保持不变。

Discovery trees and the shared decision interface。探索树以初始工作区状态 rr 为根节点。每个非根节点 vv 都有且仅有一个主父节点(即根节点或前驱节点),该父节点决定了 vv 处尝试(attempt)的起点:探索智能体恢复父节点保存的工作区状态,并继承其累积的观测信息作为上下文,从而在 vv 处生成新的尝试。节点 vv 保留了其自身的生成历史、文件系统快照以及评估得分 svs_v。得分根据固定协议生成,数值越大表示效果越好。我们定义根节点的得分为 sr=0s_r = 0。无论是在 online rollout 还是离线评估阶段,探索策略都会观测一棵树 TT(初始时仅包含根节点),并从中选择节点以继续探索。可选节点集合为 A(T)={r}∪{v∈T:v is a leaf}A(\mathcal T) = \{r\} \cup \{v \in T : v \text{ is a leaf}\},即包含根节点及当前树中所有叶节点。假设存在 W≥1W \ge 1 个并行工作进程(worker),每个进程每次处理一个“生成-评估”请求(例如并发 API 调用)。对于当前树 TT,探索策略的动作是一个批次 C∈A(T;W)C \in A(\mathcal T; W),其中 A(T;W)={C⊆A(T):∣C∣≤W}A(\mathcal T; W) = \{C \subseteq A(\mathcal T) : |C| \le W\} 为可行批次集合。该批次既决定了探索继续进行的具体位置,也决定了并发执行的尝试数量。在线和离线阶段均采用这一决策接口,两者的区别仅在于执行动作后的状态转换方式:前者进行实际执行,后者则进行重放(replay)。

Online rollout。设 t=1,2,…t = 1, 2, \dots 为 online rollout 的迭代索引,初始策略为 π1\pi_1,初始历史记录为空集 H0=( )\mathcal H_0 = (\,)。在第 tt 次迭代中,固定策略 πt\pi_t 指导探索智能体(discovery agent)生成一次新的在线 rollout,并利用已完成的探索历史 Ht−1\mathcal H_{t-1} 作为上下文信息。该历史记录虽用于指导探索,但与正在构建的树结构保持独立。设 Ttk\mathcal T_t^k 为第 tt 次迭代中完成 kk 轮探索后的发现树(其中 Tt0={r}\mathcal T_t^0 = \{r\}),且最多允许进行 K1K_1 轮探索。在轮次 k<K1k < K_1 时,策略从可选集合 A(Ttk;W)A(\mathcal T_t^k; W) 中选取节点集 CtkC_t^k,并将 CtkC_t^k 中的每个节点 vv 分配给一个工作单元(worker);该工作单元恢复节点 vv 对应的工作空间,生成一个候选解并对其进行评估。这些尝试并行执行,且每个尝试都会为其选定的父节点增加一个子节点。因此,CtkC_t^k 中的每个节点 vv 都会连接一个子节点,从而形成 Ttk+1T_t^{k+1}。从 TtkT_t^k 到 Ttk+1T_t^{k+1} 的转换是随机的,因为智能体在同一工作空间下可能会产生不同的结果。在下一轮中,每个新添加的节点成为其所在分支的可选叶节点,而根节点 rr 保持可选状态以开启新的分支。当 Ctk=∅C_t^k = \emptyset 或完成 K1K_1 轮探索时,rollout 过程结束。rollout 结束后,最终生成的树被记录为 Tt\mathcal T_t 并追加到历史记录中,形成 Ht=Ht−1∪{Tt}\mathcal H_t = \mathcal H_{t-1} \cup \{\mathcal T_t\}。随后,该方法利用 Ht\mathcal H_t 进入离线评估阶段。

Offline evaluation。在固定 Ht\mathcal H_t 的前提下,我们的方法构建并评估 M≥1M \ge 1 个策略版本 πt0,…,πtM−1\pi^0_t, \dots, \pi^{M-1}_t(其中 πt0=πt\pi^0_t = \pi_t)。每个版本都在所有历史树 TiT_i(i=1,…,ti=1, \dots, t)上进行评估,并采用预算控制参数 ρ∈R:={0,0.25,0.5,0.75,1}\rho \in \mathcal R := \{0, 0.25, 0.5, 0.75, 1\},其中 ρ\rho 决定了策略的预算偏好。由此产生的反馈将指导下一个策略版本的生成。我们分别用 mm 标记策略版本,ii 标记重放场景(即历史树),ρ\rho 标记预算偏好,以及 kk 标记单次重放中的决策轮次。外层索引 tt 在下文中保持固定并予以省略。对于每一组 (m,i,ρ)(m, i, \rho),重放过程始于 Ti,ρm,0={r}\mathcal T^{m,0}_{i,\rho} = \{r\},其中 Ti,ρm,k⊆Ti\mathcal T^{m,k}_{i,\rho} \subseteq\mathcal T_i 表示在完成 kk 轮决策后已揭示的子树。记录的树 Ti\mathcal T_i 保持不变,仅已观测到的部分在不断扩展。在轮次 k<K2k < K_2 时,当前策略 πtm\pi^m_t(基于参数 ρ\rho)根据已揭示的观测信息选择 Ci,ρm,k∈A(Ti,ρm,k;W)C^{m,k}_{i,\rho} \in A(\mathcal T^{m,k}_{i,\rho}; W)。与在线执行不同,离线重放会确定性地返回所选节点在记录中已有的子节点,而不会生成新的候选节点。因此,更新后的子树为 Ti,ρm,k+1=Ti,ρm,k∪⋃v∈Ci,ρm,kChild(v;Ti,Ti,ρm,k)\mathcal T^{m,k+1}_{i,\rho} = \mathcal T^{m,k}_{i,\rho} \cup \bigcup_{v \in C^{m,k}_{i,\rho}} \text{Child}(v; \mathcal T_i, \mathcal T^{m,k}_{i,\rho}),其中 Child(v;Ti,Tm,ki,ρ)\text{Child}(v; \mathcal T_i, \mathcal T_{m,k}^{i,\rho}) 包含节点 vv 在 Ti\mathcal T_i 中相对于当前已揭示子树而言尚未被观测到的子节点。对于 v≠rv \neq r 的情况,该集合包含 vv 唯一记录的子节点(若存在);对于 v=rv = r 的情况,该集合包含 rr 在 Ti,ρm,k\mathcal T^{m,k}_{i,\rho} 之外最早创建的子节点,从而开启一个此前未揭示的分支。无论哪种情况,若不存在未被观测的后续路径,则 Child(𝑣;Ti,Ti,𝜌m,k)=∅Child(𝑣; \mathcal T_i, \mathcal T^{m,k}_{i,𝜌}) = ∅。新显露的节点会在策略做出下一次决策前展示其存储的观测结果。重放过程最多允许进行 K2K_2 轮(将每个非空批次计为一轮完整操作),并在以下任一情形下停止:Ci,𝜌m,k=∅C^{m,k}_{i,𝜌} = ∅、已完成 K2K_2 轮操作,或 Ti,𝜌m,k=Ti\mathcal T^{m,k}_{i,𝜌} = \mathcal T_i。设 ki,𝜌𝑚,★∈{0,...,K2}k^{𝑚,★}_{i,𝜌} ∈ \{0, . . . , K_2\} 表示终止时已完成的轮数。最终观测到的子树为 Ti,𝜌m,ki,𝜌m,★⊆Ti\mathcal T^{m,k^{m,★}_{i,𝜌}}_{i,𝜌} ⊆ \mathcal T_i。因此,重放过程衡量了策略在各分支上的探索深度、将尝试归组为并行批次的方式,以及开启新分支或停止探索的时机。这些选择因策略和预算偏好而异,但每个分支均按记录的父子节点顺序进行遍历,且不会产生 Ti\mathcal T_i 范围之外的结果。

Replay objective。回放目标旨在不同预算偏好下平衡发现质量与生成成本,同时鼓励并行执行。对于每个用于评估的回放世界 Ti\mathcal{T}_i,定义 Bi:=∣Ti∣−1>0B_i := |\mathcal{T}_i| - 1 > 0 和 Si:=max⁡v∈Ti∖{r}sv>0S_i := \max_{v \in \mathcal{T}_i \setminus \{r\}} s_v > 0,分别表示已评估的非根节点总数和记录到的最高得分。对于每个 ρ∈R\rho \in \mathcal{R},令 ni,ρm:=∣Ti,ρm,ki,ρm,⋆∣−1n_{i,\rho}^m := |\mathcal{T}_{i,\rho}^{m,k_{i,\rho}^{m,\star}}| - 1 表示该回放所包含的发现智能体调用次数。令 si,ρms_{i,\rho}^m 表示已揭示的非根节点中的最高得分,即当 ni,ρm>0n_{i,\rho}^m > 0 时,si,ρm:=max⁡v∈Ti,ρm,ki,ρm,⋆∖{r}svs_{i,\rho}^m := \max_{v \in \mathcal{T}_{i,\rho}^{m,k_{i,\rho}^{m,\star}} \setminus \{r\}} s_v;否则,设 si,ρm:=0s_{i,\rho}^m := 0。我们将所达到的质量归一化为 ai,ρm:=clip⁡(si,ρm/Si,0,1)a_{i,\rho}^m := \operatorname{clip}(s_{i,\rho}^m / S_i, 0, 1)。预算扫描产生一组质量–成本点 {(ni,ρm,ai,ρm):ρ∈R}\{(n_{i,\rho}^m, a_{i,\rho}^m) : \rho \in \mathcal{R}\}。如果存在另一个点,其调用次数不多于当前点,且达到的质量不低于当前点,并且至少有一个维度严格优于当前点,则称当前点被支配。令 (nˉi,jm,aˉi,jm)j=1Lim(\bar{n}_{i,j}^m, \bar{a}_{i,j}^m)_{j=1}^{L_i^m} 表示按调用次数递增排列的互不相同的非支配点,并设 aˉi,0m:=0\bar{a}_{i,0}^m := 0。回放得分定义为:

Vim:=1Bi∑j=1Lim(aˉi,jm−aˉi,j−1m)(Bi−nˉi,jm)⏟归一化超体积−λ1∣R∣∑ρ∈Rni,ρm>0ki,ρm,⋆ni,ρm⏟并行性惩罚(1)V_i^m := \underbrace{ \frac{1}{B_i} \sum_{j=1}^{L_i^m} (\bar{a}_{i,j}^m - \bar{a}_{i,j-1}^m) (B_i - \bar{n}_{i,j}^m) }_{\text{归一化超体积}} - \lambda \underbrace{ \frac{1}{|\mathcal{R}|} \sum_{\substack{\rho \in \mathcal{R}\\n_{i,\rho}^m > 0}} \frac{k_{i,\rho}^{m,\star}}{n_{i,\rho}^m} }_{\text{并行性惩罚}} \tag{1}

其中,λ\lambda 控制并行性惩罚的强度。第一项衡量质量–成本帕累托前沿所支配区域的归一化面积,奖励那些能够以更少的发现智能体调用次数达到更高质量的策略。第二项衡量在整个预算扫描过程中,每次调用对应的平均已完成顺序轮次数,从而鼓励能够并行执行更多调用的策略;调用次数为零的回放对该项的贡献为零。

Policy improvement and selection。策略版本 πtm\pi_t^m 通过其在 Ht\mathcal{H}_t 上的平均回放得分进行评估,记为 Vm=1t∑i=1tVimV^m = \frac{1}{t}\sum_{i=1}^{t}V_i^m。离线阶段从 πt0=πt\pi_t^0 = \pi_t 开始。在每一步 m=0,…,M−2m = 0,\ldots,M-2,策略开发智能体(policy-development agent)检查 πtm\pi_t^m 的回放轨迹和得分,以及先前修订的反馈,以识别成功的决策和反复出现的失败。随后,该智能体将可执行策略代码重写为 πtm+1\pi_t^{m+1},并在相同的 tt 个回放世界上对其进行评估。下一个在线策略选择得分最高的候选策略,即 πt+1=πtm⋆\pi_{t+1} = \pi_t^{m^\star},其中 m⋆∈arg⁡max⁡m∈0,…,M−1Vmm^\star \in \arg\max_{m \in \\{0,\ldots,M-1\\}} V^m。由于当前的 rollout 策略 πt=πt0\pi_t = \pi_t^0 也包含在候选策略中,因此 Vm⋆≥V0V^{m^\star} \geq V^0,这意味着在 Ht\mathcal{H}_t 上的平均回放得分方面,πt+1\pi_{t+1} 永远不会劣于 πt\pi_t。

4.Experiments

Last updated on